home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1999 August / SGI Freeware 1999 August.iso / dist / fw_strace.idb / usr / freeware / catman / u_man / cat1 / strace.Z / strace
Encoding:
Text File  |  1998-10-28  |  24.1 KB  |  595 lines

  1.  
  2.  
  3.  
  4.      SSSSTTTTRRRRAAAACCCCEEEE((((1111))))         UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((99996666////00002222////11113333))))         SSSSTTTTRRRRAAAACCCCEEEE((((1111))))
  5.  
  6.  
  7.  
  8.      NNNNAAAAMMMMEEEE
  9.       strace - trace system    calls and signals
  10.  
  11.      SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  12.       ssssttttrrrraaaacccceeee [ ----ddddffffffffhhhhiiiiqqqqrrrrttttttttttttTTTTvvvvxxxxxxxx ] [ ----aaaa_c_o_l_u_m_n    ] [ ----eeee_e_x_p_r ] ...  [
  13.       ----oooo_f_i_l_e ] [ ----pppp_p_i_d ] ...  [ ----ssss_s_t_r_s_i_z_e ]    [ ----uuuu_u_s_e_r_n_a_m_e ] [
  14.       _c_o_m_m_a_n_d [ _a_r_g    ...  ] ]
  15.  
  16.       ssssttttrrrraaaacccceeee ----cccc [ ----eeee_e_x_p_r ] ...  [ ----OOOO_o_v_e_r_h_e_a_d ] [ ----SSSS_s_o_r_t_b_y ]    [
  17.       _c_o_m_m_a_n_d [ _a_r_g    ...  ] ]
  18.  
  19.      DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  20.       In the simplest case ssssttttrrrraaaacccceeee runs the specified _c_o_m_m_a_n_d until
  21.       it exits.  It    intercepts and records the system calls    which
  22.       are called by    a process and the signals which    are received
  23.       by a process.     The name of each system call, its arguments
  24.       and its return value are printed on standard error or    to the
  25.       file specified with the ----oooo option.
  26.  
  27.       ssssttttrrrraaaacccceeee is a useful diagnositic, instructional, and debugging
  28.       tool.     System    adminstrators, diagnosticians and trouble-
  29.       shooters will    find it    invaluable for solving problems    with
  30.       programs for which the source    is not readily available since
  31.       they do not need to be recompiled in order to    trace them.
  32.       Students, hackers and    the overly-curious will    find that a
  33.       great    deal can be learned about a system and its system
  34.       calls    by tracing even    ordinary programs.  And    programmers
  35.       will find that since system calls and    signals    are events
  36.       that happen at the user/kernel interface, a close
  37.       examination of this boundary is very useful for bug
  38.       isolation, sanity checking and attempting to capture race
  39.       conditions.
  40.  
  41.       Each line in the trace contains the system call name,
  42.       followed by its arguments in parentheses and its return
  43.       value.  An example from stracing the command ``cat
  44.       /dev/null'' is:
  45.  
  46.       open("/dev/null", O_RDONLY) =    3
  47.  
  48.       Errors (typically a return value of -1) have the errno
  49.       symbol and error string appended.
  50.  
  51.       open("/foo/bar", O_RDONLY) = -1 ENOENT (No such file or directory)
  52.  
  53.       Signals are printed as a signal symbol and a signal string.
  54.       An excerpt from stracing and interrupting the    command
  55.       ``sleep 666''    is:
  56.  
  57.       sigsuspend([]    <unfinished ...>
  58.       --- SIGINT (Interrupt) ---
  59.       +++ killed by    SIGINT +++
  60.  
  61.  
  62.  
  63.      Page 1                          (printed 8/4/98)
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.      SSSSTTTTRRRRAAAACCCCEEEE((((1111))))         UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((99996666////00002222////11113333))))         SSSSTTTTRRRRAAAACCCCEEEE((((1111))))
  71.  
  72.  
  73.  
  74.       Arguments are    printed    in symbolic form with a    passion.  This
  75.       example shows    the shell peforming ``>>xyzzy''    output
  76.       redirection:
  77.  
  78.       open("xyzzy",    O_WRONLY|O_APPEND|O_CREAT, 0666) = 3
  79.  
  80.       Here the three argument form of open is decoded by breaking
  81.       down the flag    argument into its three    bitwise-OR
  82.       constituents and printing the    mode value in octal by
  83.       tradition.  Where traditional    or native usage    differs    from
  84.       ANSI or POSIX, the latter forms are preferred.  In some
  85.       cases, strace    output has proven to be    more readable than the
  86.       source.
  87.  
  88.       Structure pointers are dereferenced and the members are
  89.       displayed as appropriate.  In    all cases arguments are
  90.       formatted in the most    C-like fashion possible.  For example,
  91.       the essence of the command ``ls -l /dev/null'' is captured
  92.       as:
  93.  
  94.       lstat("/dev/null", {st_mode=S_IFCHR|0666, st_rdev=makedev(1, 3), ...}) = 0
  95.  
  96.       Notice how the `struct stat' argument    is dereferenced    and
  97.       how each member is displayed symbolically.  In particular,
  98.       observe how the st_mode member is carefully decoded into a
  99.       bitwise-OR of    symbolic and numeric values.  Also notice in
  100.       this example that the    first argument to lstat    is an input to
  101.       the system call and the second argument is an    output.     Since
  102.       output arguments not modified    if the system call fails,
  103.       arguments may    not always be dereferenced.  For example,
  104.       retrying the ``ls -l'' example with a    non-existent file
  105.       produces the following line:
  106.  
  107.       lstat("/foo/bar", 0xb004) = -1 ENOENT    (No such file or directory)
  108.  
  109.       In this case the porch light is on but nobody    is home.
  110.  
  111.       Character pointers are dereferenced and printed as C
  112.       strings.  Non-printing characters in strings are normally
  113.       represented by ordinary C escape codes.  Only    the first
  114.       _s_t_r_s_i_z_e (32 by default) bytes    of strings are printed;    longer
  115.       strings have an ellipsis appended following the closing
  116.       quote.  Here is a line from ``ls -l''    where the getpwuid
  117.       library routine is reading the password file:
  118.  
  119.       read(3, "root::0:0:System Administrator:/"..., 1024) = 422
  120.  
  121.       _W_h_i_l_e    _s_t_r_u_c_t_u_r_e_s _a_r_e _a_n_n_o_t_a_t_e_d _u_s_i_n_g _c_u_r_l_y _b_r_a_c_e_s, _s_i_m_p_l_e
  122.       _p_o_i_n_t_e_r_s _a_n_d _a_r_r_a_y_s _a_r_e _p_r_i_n_t_e_d _u_s_i_n_g    _s_q_u_a_r_e _b_r_a_c_k_e_t_s    _w_i_t_h
  123.       _c_o_m_m_a_s _s_e_p_a_r_a_t_i_n_g _e_l_e_m_e_n_t_s.  _H_e_r_e _i_s _a_n _e_x_a_m_p_l_e _f_r_o_m _t_h_e
  124.       _c_o_m_m_a_n_d ``_i_d'' _o_n _a _s_y_s_t_e_m _w_i_t_h _s_u_p_p_l_e_m_e_n_t_a_r_y    _g_r_o_u_p _i_d_s:
  125.  
  126.  
  127.  
  128.  
  129.      Page 2                          (printed 8/4/98)
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.      SSSSTTTTRRRRAAAACCCCEEEE((((1111))))         UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((99996666////00002222////11113333))))         SSSSTTTTRRRRAAAACCCCEEEE((((1111))))
  137.  
  138.  
  139.  
  140.       _g_e_t_g_r_o_u_p_s(_3_2,    [_1_0_0, _0]) = _2
  141.  
  142.       On the other hand, bit-sets are also shown using square
  143.       brackets but set elements are    separated only by a space.
  144.       Here is the shell preparing to execute an external command:
  145.  
  146.       sigprocmask(SIG_BLOCK, [CHLD TTOU], []) = 0
  147.  
  148.       _H_e_r_e _t_h_e _s_e_c_o_n_d _a_r_g_u_m_e_n_t _i_s _a    _b_i_t-_s_e_t    _o_f _t_w_o _s_i_g_n_a_l_s,
  149.       _S_I_G_C_H_L_D _a_n_d _S_I_G_T_T_O_U.    _I_n _s_o_m_e    _c_a_s_e_s _t_h_e _b_i_t-_s_e_t _i_s _s_o    _f_u_l_l
  150.       _t_h_a_t _p_r_i_n_t_i_n_g    _o_u_t _t_h_e    _u_n_s_e_t _e_l_e_m_e_n_t_s _i_s _m_o_r_e _v_a_l_u_a_b_l_e.  _I_n
  151.       _t_h_a_t _c_a_s_e, _t_h_e _b_i_t-_s_e_t _i_s _p_r_e_f_i_x_e_d _b_y    _a _t_i_l_d_e    _l_i_k_e _t_h_i_s:
  152.  
  153.       _s_i_g_p_r_o_c_m_a_s_k(_S_I_G__U_N_B_L_O_C_K, ~[],    _N_U_L_L) =    _0
  154.  
  155.       Here the second argument represents the full set of all
  156.       signals.
  157.  
  158.      OOOOPPPPTTTTIIIIOOOONNNNSSSS
  159.               _s_t_d_e_r_r .
  160.  
  161.       ----ffff          Trace child processes as they are    created    by
  162.               currently    traced processes as a result of    the
  163.               fork(2) system call.  The    new process is
  164.               attached to as soon as its pid is    known (through
  165.               the return value of fork(2) in the parent
  166.               process).    This means that    such children may run
  167.               uncontrolled for a while (especially in the case
  168.               of a vfork(2)), until the    parent is scheduled
  169.               again to complete    its (v)fork(2) call.  If the
  170.               parent process decides to    wait(2)    for a child
  171.               that is currently    being traced, it is suspended
  172.               until an appropriate child process either
  173.               terminates or incurs a signal that would cause
  174.               it to terminate (as determined from the child's
  175.               current signal disposition).
  176.  
  177.       ----ffffffff          If the ----oooo    _f_i_l_e_n_a_m_e option    is in effect, each
  178.               processes    trace is written to _f_i_l_e_n_a_m_e._p_i_d where
  179.               pid is the numeric process id of each process.
  180.  
  181.       ----FFFF          On SunOS 4.x, this option    has the    effect of
  182.               attempting to follow vforks by performing    some
  183.               dynamic linking trickery.     Otherwise, vforks
  184.               will not be followed even    if ----ffff has been given.
  185.  
  186.       ----hhhh          Print the    help summary.
  187.  
  188.       ----iiii          Print the    instruction pointer at the time    of the
  189.               system call.
  190.  
  191.       ----qqqq          Suppress messages    about attaching, detaching
  192.  
  193.  
  194.  
  195.      Page 3                          (printed 8/4/98)
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.      SSSSTTTTRRRRAAAACCCCEEEE((((1111))))         UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((99996666////00002222////11113333))))         SSSSTTTTRRRRAAAACCCCEEEE((((1111))))
  203.  
  204.  
  205.  
  206.               etc.
  207.                This happens automatically when output is
  208.               redirected to a file and the command is run
  209.               directly instead of attaching.
  210.  
  211.       ----rrrr          Print a relative timestamp upon entry to each
  212.               system call.  This records the time difference
  213.               between the beginning of successive system
  214.               calls.
  215.  
  216.       ----tttt          Prefix each line of the trace with the time of
  217.               day.
  218.  
  219.       ----tttttttt          If given twice, the time printed will include
  220.               the microseconds.
  221.  
  222.       ----tttttttttttt          If given thrice, the time    printed    will include
  223.               the microseconds and the leading portion will be
  224.               printed as the number of seconds since the
  225.               epoch.
  226.  
  227.       ----TTTT          Show the time spent in system calls. This
  228.               records the time difference between the
  229.               beginning    and the    end of each system call.
  230.  
  231.       ----vvvv          Print unabbreviated versions of environment,
  232.               stat, termios, etc.  calls.  These structures
  233.               are very common in calls and so the default
  234.               behavior displays    a reasonable subset of
  235.               structure    members.  Use this option to get all
  236.               of the gory details.
  237.  
  238.       ----VVVV          Print the    version    number of strace.
  239.  
  240.       ----xxxx          Print all    non-ascii strings in hexadecimal
  241.               string format.
  242.  
  243.       ----xxxxxxxx          Print all    strings    in hexadecimal string format.
  244.  
  245.       ----aaaa _c_o_l_u_m_n   Align return values in a secific column (default
  246.               column 40).
  247.  
  248.       ----eeee _e_x_p_r     A    qualifying expression which modifies which
  249.               events to    trace or how to    trace them.  The
  250.               format of    the expression is:
  251.               [qualifier=][!]value1[,value2]...
  252.               where qualifier is one of    trace, abbrev,
  253.               verbose, raw, signal, read, or write and value
  254.               is a qualifier-dependent symbol or number.  The
  255.               default qualifier    is trace.  Using an
  256.               exclamation mark negates the set of values.  For
  257.               example -eopen means literally -e    trace=open
  258.  
  259.  
  260.  
  261.      Page 4                          (printed 8/4/98)
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.      SSSSTTTTRRRRAAAACCCCEEEE((((1111))))         UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((99996666////00002222////11113333))))         SSSSTTTTRRRRAAAACCCCEEEE((((1111))))
  269.  
  270.  
  271.  
  272.               which in turn means trace    only the open system
  273.               call.  By    contrast, -etrace=!open    means to trace
  274.               every system call    except open.  In addition the
  275.               special values all and none have the obvious
  276.               meanings.
  277.  
  278.       Note that some shells    use the    exclamation point for history
  279.       expansion; even inside quoted    arguments.  If so, you must
  280.       escape the exclamation point with a backslash.
  281.  
  282.       ----eeee ttttrrrraaaacccceeee====_s_e_t
  283.            Trace only the specified    set of system calls.  The ----cccc
  284.            option is useful    for determining    which system calls
  285.            might be    useful to trace.  For example,
  286.            trace=open,close,read,write means to only trace those
  287.            four system calls.  Be careful when making inferences
  288.            about the user/kernel boundary if only a    subset of
  289.            system calls are    being monitored.  The default is
  290.            trace=all.
  291.  
  292.       ----eeee ttttrrrraaaacccceeee====ffffiiiilllleeee
  293.            Trace all system    calls which take a file    name as    an
  294.            argument.  You can think    of this    as an abbreviation for
  295.            ----eeee ttttrrrraaaacccceeee====ooooppppeeeennnn,,,,ssssttttaaaatttt,,,,cccchhhhmmmmoooodddd,,,,uuuunnnnlllliiiinnnnkkkk,,,,...  which is useful to
  296.            seeing what files the process is    referencing.
  297.            Furthermore, using the abbreviation will    ensure that
  298.            you don't accidentally forget to    include    a call like
  299.            llllssssttttaaaatttt in    the list.  Betchya woulda forgot that one.
  300.  
  301.       ----eeee ttttrrrraaaacccceeee====pppprrrroooocccceeeessssssss
  302.            Trace all system    calls which involve process
  303.            management.  This is useful for watching    the fork,
  304.            wait, and exec steps of a process.
  305.  
  306.       ----eeee ttttrrrraaaacccceeee====nnnneeeettttwwwwoooorrrrkkkk
  307.            Trace all the network related system calls.
  308.  
  309.       ----eeee ttttrrrraaaacccceeee====ssssiiiiggggnnnnaaaallll
  310.            Trace all signal    related    system calls.
  311.  
  312.       ----eeee ttttrrrraaaacccceeee====iiiippppcccc
  313.            Trace all IPC related system calls.
  314.  
  315.       ----eeee aaaabbbbbbbbrrrreeeevvvv====_s_e_t
  316.            Abbreviate the output from printing each    member of
  317.            large structures.  The default is abbrev=all.  The ----vvvv
  318.            option has the effect of    abbrev=none.
  319.  
  320.       ----eeee vvvveeeerrrrbbbboooosssseeee====_s_e_t
  321.            Dereference structures for the specified    set of system
  322.            calls.  The default is verbose=all.
  323.  
  324.  
  325.  
  326.  
  327.      Page 5                          (printed 8/4/98)
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.      SSSSTTTTRRRRAAAACCCCEEEE((((1111))))         UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((99996666////00002222////11113333))))         SSSSTTTTRRRRAAAACCCCEEEE((((1111))))
  335.  
  336.  
  337.  
  338.       ----eeee rrrraaaawwww====_s_e_t
  339.            Print raw, undecoded arguments for the specifed set of
  340.            system calls.  This option has the effect of causing
  341.            all arguments to    be printed in hexadecimal.  This is
  342.            mostly useful if    you don't trust    the decoding or    you
  343.            need to know the    actual numeric value of    an argument.
  344.  
  345.       ----eeee ssssiiiiggggnnnnaaaallll====_s_e_t
  346.            Trace only the specified    subset of signals.  The
  347.            default is signal=all.  For example signal=!SIGIO (or
  348.            signal=!io) causes SIGIO    signals    not to be traced.
  349.  
  350.       ----eeee rrrreeeeaaaadddd====_s_e_t
  351.            Perform a full hexadecimal and ascii dump of all    the
  352.            data read from file descriptors listed in the specified
  353.            set.  For example, to see all input activity on file
  354.            descriptors 3 and 5 use ----eeee rrrreeeeaaaadddd====3333,,,,5555.  Note that this is
  355.            independent from    the normal tracing of the read system
  356.            call which is controlled    by the option ----eeee ttttrrrraaaacccceeee====rrrreeeeaaaadddd.
  357.  
  358.       ----eeee wwwwrrrriiiitttteeee====_s_e_t
  359.            Perform a full hexadecimal and ascii dump of all    the
  360.            data written to file descriptors    listed in the
  361.            specified set.  For example, to see all output activity
  362.            on file descriptors 3 and 5 use ----eeee wwwwrrrriiiitttteeee====3333,,,,5555.  Note
  363.            that this is independent    from the normal    tracing    of the
  364.            write system call which is controlled by    the option ----eeee
  365.            ttttrrrraaaacccceeee====wwwwrrrriiiitttteeee.
  366.  
  367.       ----oooo _f_i_l_e_n_a_m_e
  368.            Write the trace output to the file _f_i_l_e_n_a_m_e rather than
  369.            to stderr.  Use _f_i_l_e_n_a_m_e._p_i_d if ----ffffffff is used.  If    the
  370.            argument    begins with `|'    or with    `!' then the rest of
  371.            the argument is treated as a command and    all output is
  372.            piped to    it.  This is convenient    for piping the
  373.            debugging output    to a program without affecting the
  374.            redirections of executed    programs.
  375.  
  376.       ----OOOO _o_v_e_r_h_e_a_d
  377.            Set the overhead    for tracing system calls to overhead
  378.            microseconds.  This is useful for overriding the
  379.            default heuristic for guessing how much time is spent
  380.            in mere measuring when timing system calls using    the ----cccc
  381.            option.    The acuracy of the heuristic can be gauged by
  382.            timing a    given program run without tracing (using
  383.            time(1))    and comparing the accumulated system call time
  384.            to the total produced using ----cccc ....
  385.  
  386.       ----pppp _p_i_d
  387.            Attach to the process with the process ID _p_i_d and begin
  388.            tracing.     The trace may be terminated at    any time by a
  389.            keyboard    interrupt signal (CTRL-C).  ssssttttrrrraaaacccceeee will
  390.  
  391.  
  392.  
  393.      Page 6                          (printed 8/4/98)
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.      SSSSTTTTRRRRAAAACCCCEEEE((((1111))))         UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((99996666////00002222////11113333))))         SSSSTTTTRRRRAAAACCCCEEEE((((1111))))
  401.  
  402.  
  403.  
  404.            respond by detaching itself from    the traced process(es)
  405.            leaving it (them) to continue running.  Multiple    ----pppp
  406.            options can be used to attach to    up to 32 processes in
  407.            addition    to _c_o_m_m_a_n_d (which is optional if at least one
  408.            ----pppp option is given).
  409.  
  410.       ----ssss _s_t_r_s_i_z_e
  411.            Specify the maximum string size to print    (the default
  412.            is 32).    Note that filenames are    not considered strings
  413.            and are always printed in full.
  414.  
  415.       ----SSSS _s_o_r_t_b_y
  416.            Sort the    output of the histogram    printed    by the ----cccc
  417.            option by the specified critereon.  Legal values    are
  418.            time, calls, name, and nothing (default time).
  419.  
  420.       ----uuuu _u_s_e_r_n_a_m_e
  421.            Run command with    the userid, groupid and    supplementary
  422.            groups of _u_s_e_r_n_a_m_e.  This option    is only    useful when
  423.            running as root and enables the correct execution of
  424.            setuid and/or setgid binaries.  Unless this option is
  425.            used setuid and setgid programs are executed without
  426.            effective privileges.
  427.  
  428.      SSSSEEEETTTTUUUUIIIIDDDD IIIINNNNSSSSTTTTAAAALLLLLLLLAAAATTTTIIIIOOOONNNN
  429.       If ssssttttrrrraaaacccceeee is installed setuid    to root    then the invoking user
  430.       will be able to attach to and    trace processes    owned by any
  431.       user.     In addition setuid and    setgid programs    will be
  432.       executed and traced with the correct effective privileges.
  433.       Since    only users trusted with    full root privileges should be
  434.       allowed to do    these things, it only makes sense to install
  435.       ssssttttrrrraaaacccceeee as setuid to root when    the users who can execute it
  436.       are restricted to those users    who have this trust.  For
  437.       example, it makes sense to install a special version of
  438.       ssssttttrrrraaaacccceeee with mode `rwsr-xr--',    user root and group trace,
  439.       where    members    of the trace group are trusted users.  If you
  440.       do use this feature, please remember to install a non-setuid
  441.       version of strace for    ordinary lusers    to use.
  442.  
  443.      SSSSEEEEEEEE AAAALLLLSSSSOOOO
  444.       ppppttttrrrraaaacccceeee((((2222)))), pppprrrroooocccc((((4444)))), ttttiiiimmmmeeee((((1111)))), ttttrrrraaaacccceeee((((1111)))), ttttrrrruuuussssssss((((1111))))
  445.  
  446.      NNNNOOOOTTTTEEEESSSS
  447.       It is    a pity that so much tracing clutter is produced    by
  448.       systems employing shared libraries.
  449.  
  450.       It is    instructive to think about system call inputs and
  451.       outputs as data-flow across the user/kernel boundary.
  452.       Because user-space and kernel-space are separate and
  453.       address-protected, it    is sometimes possible to make
  454.       deductive inferences about process behavior using inputs and
  455.       outputs as propositions.
  456.  
  457.  
  458.  
  459.      Page 7                          (printed 8/4/98)
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.      SSSSTTTTRRRRAAAACCCCEEEE((((1111))))         UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((99996666////00002222////11113333))))         SSSSTTTTRRRRAAAACCCCEEEE((((1111))))
  467.  
  468.  
  469.  
  470.       In some cases, a system call will differ from    the documented
  471.       behavior or have a different name.  For example, on System V
  472.       derived systems the true time(2) system call does not    take
  473.       an argument and the stat function is called xstat and    takes
  474.       an extra leading argument.  These discrepancies are normal
  475.       but idiosyncratic characteristics of the system call
  476.       interface and    are accounted for by C library wrapper
  477.       functions.
  478.  
  479.       On some platforms a process that has a system    call trace
  480.       applied to it    with the ----pppp option will    receive    a SSSSIIIIGGGGSSSSTTTTOOOOPPPP.
  481.       This signal may interrupt a system call that is not
  482.       restartable.    This may have an unpredictable effect on the
  483.       process if the process takes no action to restart the    system
  484.       call.
  485.  
  486.      BBBBUUUUGGGGSSSS
  487.       Programs that    use the    _s_e_t_u_i_d bit do not have effective user
  488.       ID privileges    while being traced.
  489.  
  490.       A traced process ignores SIGSTOP except of SVR4 platforms.
  491.  
  492.       A traced process which tries to block    SIGTRAP    will be    sent a
  493.       SIGSTOP in an    attempt    to force continuation of tracing.
  494.  
  495.       A traced process runs    slowly.
  496.  
  497.       Traced processes which are descended from _c_o_m_m_a_n_d may    be
  498.       left running after an    interrupt signal (CTRL-C).
  499.  
  500.       On Linux, exciting as    it would be, tracing the init process
  501.       is forbidden.
  502.  
  503.       The ----iiii option    is weakly supported.
  504.  
  505.      HHHHIIIISSSSTTTTOOOORRRRYYYY
  506.       ssssttttrrrraaaacccceeee The original strace was written by Paul Kranenburg
  507.       for SunOS and    was inspired by    its trace utility.  The    SunOS
  508.       version of strace was    ported to Linux    and enhanced by    Branko
  509.       Lankester, who also wrote the    Linux kernel support.  Even
  510.       though Paul released strace 2.5 in 1992, Branko's work was
  511.       based    on Paul's strace 1.5 release from 1991.     In 1993, Rick
  512.       Sladkey merged strace    2.5 for    SunOS and the second release
  513.       of strace for    Linux, added many of the features of truss
  514.       from SVR4, and produced an strace that worked    on both
  515.       platforms.  In 1994 Rick ported strace to SVR4 and Solaris
  516.       and wrote the    automatic configuration    support.  In 1995 he
  517.       ported strace    to Irix    and tired of writing about himself in
  518.       the third person.
  519.  
  520.      PPPPRRRROOOOBBBBLLLLEEEEMMMMSSSS
  521.       Problems with    ssssttttrrrraaaacccceeee should be reported to the current
  522.  
  523.  
  524.  
  525.      Page 8                          (printed 8/4/98)
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.      SSSSTTTTRRRRAAAACCCCEEEE((((1111))))         UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((99996666////00002222////11113333))))         SSSSTTTTRRRRAAAACCCCEEEE((((1111))))
  533.  
  534.  
  535.  
  536.       ssssttttrrrraaaacccceeee maintainer, Rick Sladkey, at <jrs@world.std.com>.
  537.  
  538.  
  539.  
  540.  
  541.  
  542.  
  543.  
  544.  
  545.  
  546.  
  547.  
  548.  
  549.  
  550.  
  551.  
  552.  
  553.  
  554.  
  555.  
  556.  
  557.  
  558.  
  559.  
  560.  
  561.  
  562.  
  563.  
  564.  
  565.  
  566.  
  567.  
  568.  
  569.  
  570.  
  571.  
  572.  
  573.  
  574.  
  575.  
  576.  
  577.  
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.      Page 9                          (printed 8/4/98)
  592.  
  593.  
  594.  
  595.